package it.pizzastorm.domain.geolocalizzazione;

/**
 * Un aggregato (value object dei campi dell'indirizzo)
 *
 */
public class CampiIndirizzo implements IndirizzoRO{
  private String codiceNazione;
  private String citta;
  private String cap;
  private String via;
  private String numeroCivico;
  private String scala;
  private String piano;
  private String interno;
  public String getCodiceNazione() {
    return codiceNazione;
  }
  public void setCodiceNazione(String codiceNazione) {
    this.codiceNazione = codiceNazione;
  }
  public String getCitta() {
    return citta;
  }
  public void setCitta(String citta) {
    this.citta = citta;
  }
  public String getCap() {
    return cap;
  }
  public void setCap(String cap) {
    this.cap = cap;
  }
  public String getVia() {
    return via;
  }
  public void setVia(String via) {
    this.via = via;
  }
  public String getNumeroCivico() {
    return numeroCivico;
  }
  public void setNumeroCivico(String numeroCivico) {
    this.numeroCivico = numeroCivico;
  }
  public String getScala() {
    return scala;
  }
  public void setScala(String scala) {
    this.scala = scala;
  }
  public String getPiano() {
    return piano;
  }
  public void setPiano(String piano) {
    this.piano = piano;
  }
  public String getInterno() {
    return interno;
  }
  public void setInterno(String interno) {
    this.interno = interno;
  }
  @Override
  public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result + ((cap == null) ? 0 : cap.hashCode());
    result = prime * result + ((citta == null) ? 0 : citta.hashCode());
    result = prime * result + ((codiceNazione == null) ? 0 : codiceNazione.hashCode());
    result = prime * result + ((interno == null) ? 0 : interno.hashCode());
    result = prime * result + ((numeroCivico == null) ? 0 : numeroCivico.hashCode());
    result = prime * result + ((piano == null) ? 0 : piano.hashCode());
    result = prime * result + ((scala == null) ? 0 : scala.hashCode());
    result = prime * result + ((via == null) ? 0 : via.hashCode());
    return result;
  }
  @Override
  public boolean equals(Object obj) {
    if (this == obj)
      return true;
    if (obj == null)
      return false;
    if (getClass() != obj.getClass())
      return false;
    CampiIndirizzo other = (CampiIndirizzo) obj;
    if (cap == null) {
      if (other.cap != null)
        return false;
    } else if (!cap.equals(other.cap))
      return false;
    if (citta == null) {
      if (other.citta != null)
        return false;
    } else if (!citta.equals(other.citta))
      return false;
    if (codiceNazione == null) {
      if (other.codiceNazione != null)
        return false;
    } else if (!codiceNazione.equals(other.codiceNazione))
      return false;
    if (interno == null) {
      if (other.interno != null)
        return false;
    } else if (!interno.equals(other.interno))
      return false;
    if (numeroCivico == null) {
      if (other.numeroCivico != null)
        return false;
    } else if (!numeroCivico.equals(other.numeroCivico))
      return false;
    if (piano == null) {
      if (other.piano != null)
        return false;
    } else if (!piano.equals(other.piano))
      return false;
    if (scala == null) {
      if (other.scala != null)
        return false;
    } else if (!scala.equals(other.scala))
      return false;
    if (via == null) {
      if (other.via != null)
        return false;
    } else if (!via.equals(other.via))
      return false;
    return true;
  }
  @Override
  public String toString() {
    return "CampiIndirizzo [codiceNazione=" + codiceNazione + ", citta=" + citta + ", cap=" + cap + ", via=" + via + ", numeroCivico=" + numeroCivico
        + ", scala=" + scala + ", piano=" + piano + ", interno=" + interno + "]";
  }
  public CampiIndirizzo() {
    super();
  }

  public CampiIndirizzo(IndirizzoRO indirizzo) {
    this(indirizzo.getCodiceNazione(), indirizzo.getCitta(), indirizzo.getCap(), indirizzo.getVia(), indirizzo.getNumeroCivico(),indirizzo.getScala(), indirizzo.getPiano(), indirizzo.getInterno());
  }
  
  public CampiIndirizzo(String codiceNazione, String citta, String cap, String via, String numeroCivico, String scala, String piano, String interno) {
    super();
    this.codiceNazione = codiceNazione;
    this.citta = citta;
    this.cap = cap;
    this.via = via;
    this.numeroCivico = numeroCivico;
    this.scala = scala;
    this.piano = piano;
    this.interno = interno;
  }
  
}
